package Offer453;

/**
 * 最小操作次数是的数组元素相等
 * 给你一个长度为 n 的整数数组，每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。
 * @author 23737
 * @time 2021.10.20
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(new Solution().minMoves(new int[]{1, 2, 3, 4}));
    }
}

/**
 * 这是评论区找到的一种解法
 * 我理解的：
 * 首先遍历数组，然后找出数组中最小的值并记录下来
 * 然后再次进行遍历，逐一与最小值做差，将差值相加最后返回即可。
 */
class Solution {
    public int minMoves(int[] nums) {
        int res = 0;
        int min = Integer.MAX_VALUE;
        for (int num : nums) {
            min = Math.min(min, num);
        }
        for (int num : nums) {
            res += num - min;
        }
        return res;
    }
}

